-#!/bin/bash -x
+#!/bin/bash
if [ -z "$DEFAULTS_FILE" ] ; then DEFAULTS_FILE=domctl.xml ; fi
if [ -z "$DEFAULTS_PATH" ] ; then DEFAULTS_PATH=.:/etc ; fi
if [ -z "$ROUTE" ] ; then ROUTE=/sbin/route ; fi
if [ -z "$JAVA" ] ; then JAVA=java ; fi
-if [ ! -x "$IFCONFIG" ]; then
- echo Could not find executable $IFCONFIG
- exit 1
+if [ "$1" = "new" ] ; then
+ if [ ! -x "$IFCONFIG" ]; then
+ echo Could not find executable $IFCONFIG
+ exit 1
+ fi
+
+ if [ ! -x "$ROUTE" ]; then
+ echo Could not find executable $ROUTE
+ exit 1
+ fi
+
+ # Try to determine dom0 network settings to avoid hard-coding
+ # particular machines in the defaults file
+ LOCAL_IP=$(/sbin/ifconfig $QUERY_DEV | grep 'inet addr' | tr ':' '\t' | awk '{print $3}')
+ LOCAL_MASK=$(/sbin/ifconfig $QUERY_DEV | grep 'Mask' | tr ':' '\t' | awk '{print $7}')
+ LOCAL_ROUTE=$(/sbin/route -n | grep $QUERY_DEV | grep 'G' | awk '{print $2}')
fi
-if [ ! -x "$ROUTE" ]; then
- echo Could not find executable $ROUTE
- exit 1
-fi
-
-# Try to determine dom0 network settings to avoid hard-coding
-# particular machines in the defaults file
-LOCAL_IP=$(/sbin/ifconfig $QUERY_DEV | grep 'inet addr' | tr ':' '\t' | awk '{print $3}')
-LOCAL_MASK=$(/sbin/ifconfig $QUERY_DEV | grep 'Mask' | tr ':' '\t' | awk '{print $7}')
-LOCAL_ROUTE=$(/sbin/route -n | grep $QUERY_DEV | grep 'G' | awk '{print $2}')
-
#ARGS="-DTEST -DDEFAULTS_FILE=$DEFAULTS_FILE -DDEFAULTS_PATH=$DEFAULTS_PATH -DLOCAL_IP=$LOCAL_IP -DLOCAL_MASK=$LOCAL_MASK -DLOCAL_ROUTE=$LOCAL_ROUTE"
ARGS="-DDEFAULTS_FILE=$DEFAULTS_FILE -DDEFAULTS_PATH=$DEFAULTS_PATH -DLOCAL_IP=$LOCAL_IP -DLOCAL_MASK=$LOCAL_MASK -DLOCAL_ROUTE=$LOCAL_ROUTE"
-$JAVA $ARGS -jar domctl.jar $*
+$JAVA $ARGS -jar $(dirname $0)/domctl.jar $*
<nw_mask>=</nw_mask>
<nw_nfs_server>128.232.32.20</nw_nfs_server>
<nw_nfs_root>/usr/groups/srgboot/moonraider/roots/root+</nw_nfs_root>
-<max_domain_number>2</max_domain_number>
+<max_domain_number>10</max_domain_number>
<xi_tools_dir>/tools/internal/</xi_tools_dir>
</domctl_defaults>
String image = getStringParameter(args, 'i', d.domainImage);
String initrd = getStringParameter (args, 'r', d.domainInitRD);
int vifs = getIntParameter(args, 'v', d.domainVIFs);
- String bargs = getStringParameter (args, 'a', "");
+ String bargs = getStringParameter (args, 'a', "") + " ";
String root_dev = getStringParameter (args, 'd', d.rootDevice);
String nfs_root_path = getStringParameter (args, 'f', d.NWNFSRoot);
String nw_ip = getStringParameter (args, '4', d.NWIP);
String nw_host = getStringParameter (args, 'h', d.NWHost);
String domain_ip = "";
int rc = 0;
- int domain_id;
+ int domain_id = -1;
DataInputStream dis;
int idx;
int i;
+ d.describe ();
try
{
return reportError ("Cannot configure more than " +
d.MaxDomainNumber + " domains");
}
-
- /* Set up boot parameters to pass to xi_build. */
- bargs = "";
+ /* Set up boot parameters to pass to xi_build. */
if (root_dev.equals ("/dev/nfs")) {
if (vifs == 0) {
return reportError ("Cannot use NFS root without VIFs configured");
}
+ if (nfs_root_path == null) {
+ return reportError ("No NFS root specified");
+ }
+ if (nw_nfs_server == null) {
+ return reportError ("No NFS server specified");
+ }
bargs = (bargs +
"root=/dev/nfs " +
"nfsroot=" + StringPattern.parse(nfs_root_path).resolve(domain_id) +
" ");
} else {
- bargs = ("root=" + StringPattern.parse(root_dev).resolve(domain_id) +
+ bargs = (bargs +
+ "root=" + StringPattern.parse(root_dev).resolve(domain_id) +
" ");
}
}
bargs = ("ip=" + domain_ip +
- ":" + InetAddressPattern.parse(nw_nfs_server).resolve(domain_id) +
- ":" + InetAddressPattern.parse(nw_gw).resolve(domain_id) +
- ":" + InetAddressPattern.parse(nw_mask).resolve(domain_id) +
- ":" + nw_host +
+ ":" + ((nw_nfs_server == null) ? "" : (InetAddressPattern.parse(nw_nfs_server).resolve(domain_id))) +
+ ":" + ((nw_gw == null) ? "" : (InetAddressPattern.parse(nw_gw).resolve(domain_id))) +
+ ":" + ((nw_mask == null) ? "" : InetAddressPattern.parse(nw_mask).resolve(domain_id)) +
+ ":" + ((nw_host == null) ? "" : nw_host) +
":eth0:off " + bargs);
}
rc = -1;
}
+ if (rc == 0) {
+ System.out.println ("Created domain " + domain_id);
+ }
+
return rc;
}
String NWNFSServer;
String NWNFSRoot;
- int MaxDomainNumber;
+ int MaxDomainNumber = Integer.MAX_VALUE;
String XIToolsDir;
public Defaults ()
{
File f = Settings.getDefaultsFile ();
- System.out.println ("f=" + f);
try
{
e.printStackTrace();
System.exit(1);
}
+ }
+ public void describe () {
System.out.println ("Domain defaults:");
- System.out.println (" name " + domainName);
- System.out.println (" size " + domainSizeKB);
- System.out.println (" vifs " + domainVIFs);
- System.out.println (" domainImage " + domainImage);
- System.out.println (" domainInitRD " + domainInitRD);
- System.out.println (" rootDevice " + rootDevice);
- System.out.println (" NWIP " + NWIP);
- System.out.println (" NWGW " + NWGW);
- System.out.println (" NWMask " + NWMask);
+ System.out.println (" name " + domainName);
+ System.out.println (" size " + domainSizeKB);
+ System.out.println (" vifs " + domainVIFs);
+ System.out.println (" domainImage " + domainImage);
+ System.out.println (" domainInitRD " + domainInitRD);
+ System.out.println (" rootDevice " + rootDevice);
+ System.out.println (" NWIP " + NWIP);
+ System.out.println (" NWGW " + NWGW);
+ System.out.println (" NWMask " + NWMask);
System.out.println (" MaxDomainNumber " + MaxDomainNumber);
- System.out.println (" NWNFSServer " + NWNFSServer);
- System.out.println (" NWNFSRoot " + NWNFSRoot);
- System.out.println (" XIToolsDir " + XIToolsDir);
+ System.out.println (" NWNFSServer " + NWNFSServer);
+ System.out.println (" NWNFSRoot " + NWNFSRoot);
+ System.out.println (" XIToolsDir " + XIToolsDir);
}
/***********************************************************************/